package entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="facturas")
public class Factura implements Serializable{

	private static final long serialVersionUID = 1L;
	@Id
	private Integer numero;
	private Date fecha;
	@ManyToOne(cascade=CascadeType.ALL)
	@JoinColumn(name="idMesa")
	private Mesa mesa;
	@ManyToOne(cascade=CascadeType.ALL)
	@JoinColumns({
		@JoinColumn(name="tipoDoc", referencedColumnName="tipoDoc"),
		@JoinColumn(name="numeroDoc", referencedColumnName="numero"),
	})
	private Mozo mozo;
	private Integer cantidadPersonas;
	private Float total;
	@ManyToMany(cascade=CascadeType.ALL)
	@JoinTable(name = "itemsFactura",
	joinColumns = {@JoinColumn(name="numeroFactura")},
	inverseJoinColumns = {@JoinColumn(name="numeroPlato")})
	private List<Plato> platos = new ArrayList<Plato>();
	
	
	public Factura() {
	}
	
	public Integer getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}

	public Date getFecha() {
		return fecha;
	}
	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
	public Mesa getMesa() {
		return mesa;
	}
	public void setMesa(Mesa mesa) {
		this.mesa = mesa;
	}
	public Mozo getMozo() {
		return mozo;
	}
	public void setMozo(Mozo mozo) {
		this.mozo = mozo;
	}
	public Integer getCantidadPersonas() {
		return cantidadPersonas;
	}
	public void setCantidadPersonas(Integer cantidadPersonas) {
		this.cantidadPersonas = cantidadPersonas;
	}
	public Float getTotal() {
		return total;
	}
	public void setTotal(Float total) {
		this.total = total;
	}
	public List<Plato> getPlatos() {
		return platos;
	}
	public void setPlatos(List<Plato> platos) {
		this.platos = platos;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	
	
	

}
